package org.jeecg.modules.wmhb.service;

import org.jeecg.modules.wmhb.entity.*;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * @Description: 任务书表
 * @Author: jeecg-boot
 * @Date:   2024-09-06
 * @Version: V1.0
 */
public interface IWmTaskbookService extends IService<WmTaskbook> {
    /**
     * 检查任务书下是否有任务
     * @param id
     * @return
     */
    public boolean checkHasItem(String id);

    /**
     * 根据批次号获取单个任务书
     */
    public WmTaskbook findOneByBatchNo(String batchNo);

    /**
     * 转换任务书
     * @param wmTaskbookFlow
     * @return
     */
    public WmTaskbook transferTaskbook(WmTaskbook wmTaskbook, WmTaskbookFlow wmTaskbookFlow);

    /**
     * 转换任务书
     * @param wmTaskbookFlowId
     * @param wmContractProductId
     * @return
     */
    public WmTaskbook selectByFolwAndContract(String wmTaskbookFlowId, String wmContractProductId);

    /**
     * 查询任务书列表（包含任务）
     */
    public List<WmTaskbook> selectTaskbookWithTask(List<WmTaskbook> wmTaskbookList);

    /**
     * 查询任务书及其任务
     */
    public WmTaskbook selectTaskbookWithTask(WmTaskbook wmTaskbook);

    /**
     * 保存任务书和任务
     */
    public void saveTaskbookAndTask(WmTaskbook wmTaskbook, WmContractProduct wmContractProduct);

    /**
     * 通过合同ID列表查询任务书ID列表
     */
    public List<String> selectIdListByContractIdList(List<String> wmContractIdList);

    /**
     * 查询任务下面可以展开的节点列表
     */
    public List<String> getExpandKeys(WmTaskbook wmTaskbook);

    /**
     * 通过导入批次号获取任务书
     */
    public WmTaskbook getByBatchNo(String batchNo);

    /**
     * 通过合同产品ID列表查询任务书列表
     */
    public List<WmTaskbook> selectByContractProduct(List<String> wmContractProductList);

    /**
     * 通过关键字搜索
     */
    public List<WmTaskbook> searchByName(String searchKey);

    /**
     * 通过合同产品ID查询任务书列表
     */
    public List<WmTaskbook> selectByContractProduct(String wmContractProductId);

    /**
     * 根据设计任务书查询生产任务书
     */
    public WmTaskbook selectProduceTaskbookByDesignTaskbook(WmTaskbook wmTaskbookDesign);
}
